=begin

This file is part of the RSIF project, http://rsif.googlecode.com

Copyright (c) 2009-2009 Roberto Dario Seminara

rsif is free software: you can redistribute it and/or modify
it under the terms of the gnu general public license as published by
the free software foundation, either version 3 of the license, or
(at your option) any later version.

rsif is distributed in the hope that it will be useful,
but without any warranty; without even the implied warranty of
merchantability or fitness for a particular purpose.  see the
gnu general public license for more details.

you should have received a copy of the gnu general public license
along with rsif.  if not, see <http://www.gnu.org/licenses/>.


=end
require "net/http"
require "uri"
require "cgi"

class BasicHttpConnector < Connector

	instance_provide :connector

	def self.can_instantiate
		if self.context.symbol(:http_base_url) then
			1
		else
			nil
		end

	end

	def initialize
		@http_base_url = self.context.symbol(:http_base_url)
		@http_get_parameters = self.context.symbol(:http_get_parameters)
		@http_input_get_parameter = self.context.symbol(:http_input_get_parameter)
	end

	##
	#
	#	Envia un input por el connector y devuelve el resultado
	#
	##
	def put( input )

		url = URI.parse(@http_base_url)

		res = Net::HTTP.start(url.host, url.port) {|http|

			strurl = "#{url.path}?"
			strurl << @http_get_parameters.map{|x,y| "#{x}=#{CGI.escape(y)}"}.join("&")
			strurl << "&" if @http_get_parameters.length > 0
			strurl << "#{@http_input_get_parameter}=#{CGI.escape(input)}"

		      http.get(strurl)
		}

		res.body
	end


end
